1. Field of the Invention
This invention relates generally to computer communications systems, and more particularly to a serial communication interface for receiving and decoding serial data from a communications channel.
2. General Description of the Prior Art
In order to transmit information between two places, it is necessary to have a transmitter, a communications channel, and a receiver. The transmitter must be capable of converting information generated by humans or machines into electronic signals that will travel over a communications channel. The channel conveys the signals to the receiver with minimum distortion. The receiver then reconverts the signals back to the original form. In computer communications, bits of binary data are commonly transferred between electronic devices by changes in current or voltage. Data may be transferred in "serial", over a single line, or in "parallel", over several lines at once. The transfers may be in "synchronous", in which the exact departure or arrival time of each bit of information is predictable, or they may be "asynchronous", in which case the data is transferred at non-uniform rates. Data may also be transferred in parallel transmission where each bit of the set of bits that represent a character has its own wire. In synchronous mode, an additional wire called the "strobe" or "clock" lead notifies the receiver unit that all of the bits are present on their respective wires so that the voltages on the wires can be sampled. Computers utilize both these modes of transmission. Where data is to be transferred between devices that are in close physical proximity, parallel transmission and reception is generally utilized. However, as the distance between these devices increases, the multiple wires not only become more costly, but the complexity of the line drivers and receivers increases, due to the increased difficulty of properly driving and receiving signals on long wires. Serial transmission is, therefore, generally used where the cost of communications medium is high enough to justify a relatively complex transmitter and receiver system that will serialize the bits that represent the character, send them over the single line, and reassemble them in parallel form at the reception end. For these reasons in most data communications applications, serial transmission is preferable to parallel transmission.
Some computer devices operate in an analog environment where alternating current signals convey information. However, most computers that are used today are digital computers which require that direct current (d.c.) pulses or a.c. signals converted into d.c. pulses be used to represent data. D.c. pulses form an on-off or mark-space configuration. (By convention, the idle state wherein current is flowing is called the "ONE" state or "mark" condition; and the lack of current state is called the "ZERO" state, or "space", condition.) When data transmission is accomplished with d.c. signals, the transmission line can terminate directly in an adapter which interfaces it with the sending or receiving terminal. On the other hand, when an a.c. signalling technique such as frequency shift keying is used, the d.c. signal from the transmitting adapter is converted into a.c. in a modulator and reconverted into d.c. in a demodulator on the receiving end of the circuit. These "modulating" and "demodulating" circuits are frequently combined into a single circuit called a "modem". Modems provide the necessary compatability between data processing equipment and communications facilities. They come in a variety of forms and may be inherently simplex, inherently half duplex, or full duplex. Data sets are modems with additional control capabilities such as those required for automatic dialing. With this type of equipment it is possible for computers to communicate with each other, utilizing commercial communications channels. However, a computer system must also communicate with various hardware devices in its own system. For example, a processor must communicate with input devices such as card readers, tape drives, disk drives, terminals, teleprinters, etc. More often than not, these devices are located in remote locations. For example, a factory data collection terminal for collecting production and inventory information may be located in a building housing manufacturing facilities; whereas the central processor may be located in a building housing the office facilities. Where these distances are generally no more than 1500-1800 feet, it has been possible to transfer information within the various hardware of the system and to the data sets by a synchronous transmission utilizing data (1) bit-oriented (pulse) protocol or (2) character-oriented protocol. The terms "bit-oriented" and "character-oriented" refer not to interfaces but rather to the protocol used to control the interface (link-level protocol). In a character-oriented protocol, all data must be framed into "characters" and certain character codes (control characters) are assigned special meaning to control the dialog over the interface. With this protocol, it is not possible to send an arbitrary sequence of bits (pure binary data) over the channel, rather data must first be encoded into an interchange code such as ASCII or EBCDIC (IBM) in order to be transmitted. In a bit-oriented protocol, the data is modified by the interface hardware as it is transmitted so that certain bit sequences cannot occur. In SDLC/HDLC, the modification is such that no more than five ONE bits occur in sequence. Furthermore, the data is transmitted in blocks of arbitrary length called frames and the interface hardware precedes (and terminates) each frame with a unique bit sequence (i.e., one that cannot otherwise occur due to the above-mentioned modification). In SDLC/HDLC this sequence, called a Flag, consists of six ONE bits preceded and followed by ZERO bits. Note that this eight-bit sequence is always interpreted as a Flag, no matter where it occurs. In this type of protocol, the link-level control information immediately follows the Flag and is in turn followed by the actual data (if any). With a bit-oriented protocol, the data is always sent in synchronous mode, never in asynchronous (start-stop) mode.
With a bit-oriented protocol, the information transferred between the computer and data set is a single bit. This means that when the computer wants to send a character, it must break that character down into the individual bits and output those bits plus the start and stop bits to the interface at the proper time interval; e.g., a bit every 22 milliseconds. From the interface, the bit is sent to the data set where it is converted to a mark pulse if the bit was a "ONE" or to a space pulse if the bit was a "ZERO". On an incoming character pulse sequence, the data set converts each pulse to a binary digit and passes the digit to the interface, which in turn passes it to the computer. The computer must be ready to receive each bit on the proper time interval; but it must also build the character from the individual bits it receives, taking care to remove the start and stop control bits.
The second type of interface used in a synchronous transmission is the character-oriented interface. Here is the interface which performs the various bit and timing manipulations. On input from the communications line to the computer, it is the interface which receives the bits from the data set, builds the character, and removes the start and stop elements. It is only after the entire character has been received that the interface presents the data to the computer. On output of the computer to the line, the computer presents the entire character to the interface. It is then the function of the interface to break down the character to the individual bits, add the start and stop bits, and transmit the bits to the data set at the proper rate. This type of interface noticeably relieves the load on the computer system. The character interface does more work than the bit interface, and, as one might expect, it is more expensive.
These interfaces function as multiplexers and allow the user to attach several devices to a computer. Without these interfaces, the user would have to allocate a channel or port for each communication device in the system. The second function these two types of interfaces have in common is their ability to convert the logic levels of the data sets to the logic levels of the computer. Finally, the third function of the interfaces is to transfer information between the computer and the data sets attached to the interface.
There are now several manufacturers selling communications interfaces on LSI (large scale integration) semiconductor chips which perform the required functions in either synchronous or asynchronous communication. One type is known as the "USART" (universal synchronous asynchronous receive and transmit) which is commercially available from manufacturers such as Intel, Texas Instruments, and others. Another type which performs the same function is known as the "SIO" and is available from Zilog. Regardless of what manufacturers manufacture the SIO or USART, there are usually 8 leads that deliver the receive characters to the computer and 8 leads upon which the computer can place characters for transmission onto the communication line. There are also additional leads which indicate that a receive character is available for reading by the computer and which indicate that a transmitter is available for the computer to load with a character for transmission. Other leads provide overrun and underrun error indications. Some interfaces also include leads that determine the number of bits per character, and whether or not parity operation is enabled. If parity is used, some chips include leads that determine whether that parity is odd or even.
These prior art systems generally function effectively in transmitting digital data within the computer system wherein the various hardware within the system are located within 1500-1800 feet. At greater distances there is a distortion of the signal due to various resistances on the line, and the signal loses strength and, in many instances, cannot be distinguished from the background noise.
Information being transferred from a remote work station to a controller over a single conductor is received as a serial string of data bits. The serial string may be made up of asynchronous characters, that is, having a start bit, a number of data bits, and one or two stop bits. A clocking system operating at 16 times the bit rate locates the center of the start bit and strobes the center of the subsequent data and stop bits. Such a system is described in U.S. Pat. No. 3,680,057 entitled "Data Communications Subchannel".
The start and stop bits may be removed and the data bits sent as a synchronous stream to increase the character rate. In communications systems which include modems, the modem generates a separate clock which is received by the controller and samples the data bits. This is described in the aforementioned U.S. Patent.
It was desirable, however, to eliminate the separate clock signal and replace it with clocking logic internal to the controller. The clocking logic generated a clocking signal 16 times the data bit rate and a particular clock signal was selected to sample the midpoint of each of the synchronous data bits.
U.S. Pat. No. 4,405,979 issued Sept. 20, 1983, entitled "A Data Processing System Having Apparatus in a Communications Subsystem for Establishing Byte Synchronization" describes apparatus for synchronizing the byte timing signal to the byte. A microprocessor generates a fixed format of binary ONE's and having ZERO's to determine the number of bits between the byte timing signal and the start of the byte.
In order to communicate with hardware within the computer system without utilizing expensive equipment such as modems and data sets, the new approach utilizes coaxial cable together with analog send-receive circuitry and digital send-receive logic circuitry.